package com.healthcarex.hip.saas.mybatis.service;

import com.healthcarex.hip.saas.common.model.BaseModel;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author chenpan
 * @ClassName: IBaseService
 * description:
 * @date 2018-04-02 15:40
 */
public interface IBaseService<T extends BaseModel> {

    /**
     * 获取全局序列
     * @param seqName
     * @return
     */
    Integer getSequence(@Param("seqName") String seqName);

    /**
     * 获取全部数据
     * @return
     */
    List<T> selectAll();

    /**
     * 根据主键Id获取数据
     * @param id
     * @return
     */
    T selectById(Object id);

    /**
     * 保存对象
     * @param entity
     * @return
     */
    int save(T entity);

    /**
     * 根据主键id删除
     * @param id
     * @return
     */
    int delete(Object id);

    /**
     * 根据主键批量删除
     * @param list
     * @param property
     * @param clazz
     * @return
     */
    int batchDelete(List<String> list, String property, Class<T> clazz);

    /**
     * 根据主键更新所有字段
     * @param entity
     * @return
     */
    int updateAll(T entity);

    /**
     * 根据主键更新所有不为空字段
     * @param entity
     * @return
     */
    int updateNotNull(T entity);

    /**
     * 条件查询
     * @param example
     * @return
     */
    List<T> selectByExample(Object example);

}
